#ifndef RENDERFUNCTION_H
#define RENDERFUNCTION_H
#include "StompedReality/Core.h"
#include "StompedReality/Core/IGame.h"
#include <iostream>
#include <stdint.h>

namespace StompedReality
{
namespace Graphics
{

class RenderSystem;

/*!
 *
 * \author	Stefan Kazalski
 *
 * \brief	Render function base
 *
 *			All renderfunctions need to inhert this class.
 */
class DLL_EXPORT RenderFunction {
 protected:

  unsigned char m_RenderOrder;
  bool m_IsStatic;

 public:

  //! \brief	Constructor.
  //! \param	renderOrder		Rendered at position (Default: 0).
  //! \param	isStatic		Statis or not (Default: true).
  RenderFunction( unsigned char renderOrder = 0, bool isStatic = true );

  //! \brief	Destructor
  virtual ~RenderFunction ( );

  //! \brief	Render order getter.
  unsigned char GetRenderOrder ( );

  //! \brief	Draw function.
  //! \param	game	The game.
  virtual void Draw ( StompedReality::IGame* game ) = 0;

  //! \brief	Copies render data.
  virtual void CopyRenderData ( ) = 0;

};

}
}
#endif // RENDERFUNCTION_H
